C programs consist of one or more SOURCE FILES which contain the programmer's C source code. These are linked together after compilation to produce the executable program.
The SCOPE of an identifier (user-defined type name, variable name, or function name) is the area of the source code from which the identifier can be accessed. A variable's STORAGE CLASS determines the allocation and deallocation of space for the variable.
There are 2 important scopes for identifiers in ANSI C. An identifier with BLOCK scope is "visible" only within the body of the function in which it is declared (a "local" identifier). An identifier having FILE scope must be declared outside of the body of any function in the source file, and can be accessed from any place in the file following where it is declared (a "global" identifier).
For example, the name (or "tag") for a user-defined data type may be defined at the beginning of a source file (file scope) so that it can be used to define variables of this type within any function later in the source file.